{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from sklearn import  datasets, cross_validation, ensemble"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用sklearn自带的手写数字\n",
    "def load_data():\n",
    "    digits = datasets.load_digits()\n",
    "    return cross_validation.train_test_split(digits.data,digits.target,test_size=0.25,random_state=0, stratify=digits.target)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Traing score:1.0\n",
      "Testing score:0.96\n"
     ]
    }
   ],
   "source": [
    "def test_GBDT(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    clf = ensemble.GradientBoostingClassifier()\n",
    "    clf.fit(X_train,Y_train)\n",
    "    print('Traing score:{0}'.format(clf.score(X_train,Y_train)))\n",
    "    print('Testing score:{0}'.format(clf.score(X_test,Y_test)))\n",
    "\n",
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = load_data()\n",
    "test_GBDT(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 考个体决策树的数量对结果的影响\n",
    "def test_GBDT_num(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    nums = np.arange(1,100,step=2)\n",
    "    fig = plt.figure()\n",
    "    fig.set_figheight(5)\n",
    "    fig.set_figwidth(15)\n",
    "    ax = fig.add_subplot(111)\n",
    "    traing_score=[]\n",
    "    testing_score=[]\n",
    "    for num in nums:\n",
    "        clf = ensemble.GradientBoostingClassifier(n_estimators=num)\n",
    "        clf.fit(X_train,Y_train)\n",
    "        traing_score.append(clf.score(X_train,Y_train))\n",
    "        testing_score.append(clf.score(X_test,Y_test))\n",
    "        \n",
    "    ## 绘图 \n",
    "    ax.plot(nums, traing_score,  label='Traing score')\n",
    "    ax.plot(nums, testing_score, label='Testing score')\n",
    "    ax.set_xlabel('estimator_num')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.legend(loc='lower right')\n",
    "    ax.set_title('GradientBoostingClassifier')    \n",
    "    plt.show()\n",
    "\n",
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = load_data()\n",
    "test_GBDT_num(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4IAAAEWCAYAAAAzYSkdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XeYVOX5//H3vQssZZfeO6KCdBSRpqhYABUUUYqgYhK70RjyDUmMLTGS6C9RA2oUUREFCyqoEEXF2JAOIiDNRpcinQV29/798Qwy9AV29mz5vK5rrp0558yce3Yo+9nnPs9j7o6IiIiIiIgUHklRFyAiIiIiIiK5S0FQRERERESkkFEQFBERERERKWQUBEVERERERAoZBUEREREREZFCRkFQRERERESkkFEQFBGRXGdm35nZebH7fzSzYVHXlEi5+R7N7F4zG5nA159nZmfH7puZPWtmP5nZVDM708wWJurcIiKScxQERUTkAGbW28ymmNk2M/sxdv9mM7OcPpe7/83df3m8r2Nmdc3MzaxI3LZrzSzTzLbGbt+Y2U3He64j1HG2mS2P35ZT7zHuHH3NbHrsPa0yswlm1iGnXv9w3L2xu38Ue9gBOB+o6e6t3f0Td2+QG3WIiMjxURAUEZF9mNlvgUeBh4CqQBXgRqA9UOwgxyfnaoFHb7K7p7p7KnA58A8zaxl1UcfKzO4EHgH+RvhsagOPA90jKKcO8J27bzveF4oP8CIikngKgiIi8jMzKwPcD9zs7q+5+xYPZrn7Ve6+08yeM7MnzGy8mW0DzjGzi8xslpltNrNlZnbvfq/b38y+N7P1Zvan/fbt08poZm3M7HMz22hmc/a0Icb2fWRmfzGzz8xsi5m9Z2YVY7s/jn3dGBspa7v/+3P3WcAC4JS41+wWa3fcGHv9+H2nxLZtjB3TLW5fVzObH6tjhZkNNLNSwASgetwoZPX49xg3cnmNmf1gZuvivydmVsLMno+1Wy4ws//bM8IY9/nc4u6vu/s2d9/t7m+5++8O8Zm+amarzWyTmX1sZo0P9x5i2yua2dux973BzD4xs6TYvu/M7Dwz+wUwDGgbe5/37T8aGnvvY8xsrZl9a2a/3u9zf83MRprZZuDag9UvIiKJoSAoIiLx2gIpwNgjHNcXeABIAz4FtgFXA2WBi4CbzOxSADNrBDwB9AeqAxWAmgd7UTOrAbwD/BUoDwwExphZpf3OPQCoTBihHBjbflbsa9nYCODkg7z+6cDJwPTY45OBUcAdQCVgPPCWmRUzs6LAW8B7sXPdBrxoZntaH58BbnD3NKAJ8GFsZKwLsHLPKKS7rzzE97AD0ADoBNwdF0DvAeoCJxDaLvvFPactUBx44xCveTATgJNi72Em8GLcvgPeQ2z7b4Hlse9JFeCPgMe/qLs/Qxgp3jPiek/8/lhwfAuYA9SIvc87zOzCuMO6A68R/tzE1yUiIgmmICgiIvEqAuvcPWPPhrjRuR1mtidsjXX3z9w9y93T3f0jd58be/wlIVx1jB3bE3jb3T92953An4GsQ5y/HzDe3cfHXmsiIbR1jTvmWXdf5O47gFeAFkd4T21i9W8BpgIvAItj+3oB77j7RHffDTwMlADaAW2AVGCwu+9y9w+Bt4E+sefuBhqZWWl3/8ndZx6hjv3d5+473H0OISw1j22/Evhb7DWXA4/FPacC+30+R+Luw2MjuzuBe4HmsZHFw72H3UA1oE5sxPETd/cDX/2wTgcqufv9se/fN8DTQO+4Yya7+5uxz3rHUb6+iIgcBwVBERGJtx6oGH+9lru3c/eysX17/t9YFv8kMzvDzCbFWgA3EUaK9rRsVo8/PjZqtv4Q568DXBELbhvNbCNh5Kxa3DGr4+5vJ4S1w/nC3cvGRr2qAo0J19ftqe37uNqyYrXW2FN3bNse38f2QbjesCvwvZn972CtqEdwqPexz/drv/sHfD6HY2bJZjbYzJbG2i+/i+3a89kc6j08BCwB3rMwwc6g7L6pOHUILbLxn+UfCSOMB3tvIiKSixQERUQk3mRgJ0eeeGT/0aGXgHFALXcvAzwJ7JlhdBVQa8+BZlaSMLJ1MMuAF2LBbc+tlLsPzkbtRxyxcvc1wBjgktimlYTAsqc2i9W6Irav1p5r42Jqx/bh7tPcvTuh5fJNwuhktuo4glXs2zpbK+7+ns/n0my+Vl/CZ3keUIbQcgqxz+ZQ7yE2gvhbdz8B6AbcaWadjvJ9LAO+3e+zTHP3+NHd4/1eiYjIMVIQFBGRn7n7RuA+4HEz62lmaWaWZGYtgFKHeWoasMHd082sNSGA7PEacLGZdTCzYoTJTg71/89I4BIzuzA2mlU8NgHJQa8p3M9aQsvpCYc6wMwqAJcB82KbXgEuMrNOsWsCf0sIWp8DUwgjdf9nZkUtTFpzCTA6dg3hVWZWJtZSupm97a5rgApx7ZdH6xXgD2ZWLnbN5K17drj7JuBuYKiZXWpmJWO1dTGzfxzktdJi72c9UJK9I6Ec7j2Y2cVmdmIsGG8CMjl0O++hTAW2mNnvLUyAk2xmTWLXaYqISMQUBEVEZB/u/g/gTuD/CKFmDfAf4PeEgHQwNwP3x67Du5u9o2O4+zzgFsKo4SrgJ8JEJAc79zLCCNYfCcFuGfA7svH/lbtvJ0xg81msFbFNbNeeWS23EmYMXUuY+AV3X0i4LvHfwDpC0Lskdk3brtjjLrF9jwNXu/vXsdftD3wXa7m8Ebgq9ppfE66R/CZWR/Uj1b6f+wnfn2+B9wlBemfc+/x/hM/nrrjv0a2EEb39jSC0s64A5gNf7Lf/oO+BMLnM+8BWwijk4+4+6WjehLtnAhcTruH8lvA9HEYYmRQRkYjZ0V/7LSIiIrnFzG4Cert7xyMeLCIikk0aERQREclDzKyambWPteQ2ILSrHs1yESIiIkeUrVnHREREJNcUI7Ti1gM2AqMJbakiIiI5Rq2hIiIiIiIihYxaQ0VERERERAqZAtMaWrFiRa9bt27UZYiIiIiIiERixowZ69y9UnaOLTBBsG7dukyfPj3qMkRERERERCJhZt9n91i1hoqIiIiIiBQyCoIiIiIiIiKFjIKgiIiIiIhIIaMgKCIiIiIiUsgoCIqIiIiIiBQyCQuCZjbczH40s68Osd/M7DEzW2JmX5rZqXH7rjGzxbHbNYmqUUREREREpDBK5Ijgc0Dnw+zvApwUu10PPAFgZuWBe4AzgNbAPWZWLoF1ioiIiIiIFCoJW0fQ3T82s7qHOaQ7MMLdHfjCzMqaWTXgbGCiu28AMLOJhEA5KlG1FnbuzpiZK/hh/baoSxERERERyReuaVeXCqkpUZdxzKJcUL4GsCzu8fLYtkNtP4CZXU8YTaR27dqJqbKAc3ceeGcBwz79FgCziAsSEREREckHurWooSAYFXd/CngKoFWrVh5xOflOfAi8tl1d7rmkEaYkKCIiIiJS4EU5a+gKoFbc45qxbYfaLjlIIVBEREREpPCKMgiOA66OzR7aBtjk7quAd4ELzKxcbJKYC2LbJIcoBIqIiIiIFG4Jaw01s1GEiV8qmtlywkygRQHc/UlgPNAVWAJsBwbE9m0ws78A02Ivdf+eiWPk+CkEioiIiIhIImcN7XOE/Q7ccoh9w4HhiairMFMIFBERERERiLY1VHKRQqCIiIiIiOyhIFgIKASKiIiIiEg8BcECTiFQRERERET2pyBYgCkEioiIiIjIwSgIFlAKgSIiIiIicigKggWQQqCIiIiIiByOgmABoxAoIiIiIiJHkrB1BCX3uTt/fWcBzygEioiIiIjIYWhEsIBQCBQRERERkexSECwAFAJFRERERORoKAjmcwqBIiIiIiJytBQE8zGFQBERERERORYKgvmUQqCIiIiIiBwrBcF8SCFQRERERESOh4JgPqMQKCIiIiIix0tBMB9RCBQRERERkZygIJhPKASKiIiIiEhOURDMBxQCRUREREQkJykI5nEKgSIiIiIiktMUBPMwhUAREREREUkEBcE8SiFQREREREQSRUEwD1IIFBERERGRRCoSdQGyL3fnL28vYPhnCoEiIiIiIpIYGhHMQxQCRUREREQkNygI5hEKgSIiIiIiklsUBPMAhUAREREREclNCoIRUwgUEREREZHcltAgaGadzWyhmS0xs0EH2V/HzD4wsy/N7CMzqxm37x9mNs/MFpjZY1YA05FCoIiIiIiIRCFhQdDMkoGhQBegEdDHzBrtd9jDwAh3bwbcDzwYe247oD3QDGgCnA50TFStUVAIFBERERGRqCRyRLA1sMTdv3H3XcBooPt+xzQCPozdnxS334HiQDEgBSgKrElgrblKIVBERERERKKUyCBYA1gW93h5bFu8OUCP2P3LgDQzq+DukwnBcFXs9q67L9j/BGZ2vZlNN7Ppa9euzfE3kAgKgSIiIiIiErWoJ4sZCHQ0s1mE1s8VQKaZnQicAtQkhMdzzezM/Z/s7k+5eyt3b1WpUqXcrPuYKASKiIiIiEheUCSBr70CqBX3uGZs28/cfSWxEUEzSwUud/eNZvYr4At33xrbNwFoC3ySwHoTSiFQRERERETyikSOCE4DTjKzemZWDOgNjIs/wMwqmtmeGv4ADI/d/4EwUljEzIoSRgsPaA3NLxQCRUREREQkL0lYEHT3DOBW4F1CiHvF3eeZ2f1m1i122NnAQjNbBFQBHohtfw1YCswlXEc4x93fSlStiaQQKCIiIiIieY25e9Q15IhWrVr59OnToy5jHwqBIiIiIiKSW8xshru3ys6xUU8W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\n",
      "text/plain": [
       "<Figure size 1080x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 最大树深对结果的影响\n",
    "def test_GBDT_maxdepth(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    maxdepths = np.arange(1,20)\n",
    "    fig = plt.figure()\n",
    "    fig.set_figwidth(15)\n",
    "    ax = fig.add_subplot(111)\n",
    "    traing_score=[]\n",
    "    testing_score=[]\n",
    "    for maxdepth in maxdepths:\n",
    "        clf = ensemble.GradientBoostingClassifier(max_depth=maxdepth)\n",
    "        clf.fit(X_train,Y_train)\n",
    "        traing_score.append(clf.score(X_train,Y_train))\n",
    "        testing_score.append(clf.score(X_test,Y_test))\n",
    "        \n",
    "    ## 绘图 \n",
    "    ax.plot(maxdepths, traing_score,  label='Traing score')\n",
    "    ax.plot(maxdepths, testing_score, label='Testing score')\n",
    "    ax.set_xlabel('maxdepth')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.legend(loc='lower right')\n",
    "    ax.set_title('GradientBoostingClassifier')    \n",
    "    plt.show()\n",
    "\n",
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = load_data()\n",
    "test_GBDT_maxdepth(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ZkPtMyG+RPRiEBERkZNSJJO1FKB+0Pt6gW3BbgU+AnDOzQDKADWA64FvnHPpzrktwE9AQgRjzb/MdNg0X12gIiIiEhGRbAqaBZxmZo3xSdoAfBIWLBnoCbxpZq3wydrWwPYe+Ja28sC5wL8jGGv+bVkMGWlQV5MLREQketLT01m/fj1paWnRDkWClClThnr16lGyZMl8XyNiyZpzLsPMhgATgHhglHNukZk9ASQ658YC9wOvm9kf8ZMKbnHOOTMbDrxhZosAA95wzs2PVKwFkj25QDNBRUQkitavX0/FihVp1KgRZhbtcARwzrF9+3bWr19P48aN832diA6ycs6Nw08cCN72SNDrxUCXY5y3F1++I/alzIGy1aBqo2hHIiIixVhaWpoStRhjZlSvXp2CToKM9gSDoi9lju8C1X8OERGJMiVqsScc3xMlawVxaB9sXaLJBSIiIhIxStYKYuM8cFlK1kREpNjbvn077dq1o127dpx66qnUrVv3t/eHDh0K6RqDBw9m2bJlEY606FFhsILQ5AIREREAqlevzty5cwF47LHHqFChAkOHDj3iGOcczjni4o7dVvTGG29EPM78yMjIoESJ6KVMStYKImU2VG4AFaJYkFdERCSHx79cxOIN4V2lsXWdSjx6WZs8n7dy5Ur69etH+/btSUpKYtKkSTz++OPMmTOHAwcOcN111/HII37uYdeuXfnvf//L6aefTo0aNbjzzjsZP3485cqV44svvqBWrVqsWLGCQYMGsX//fvr168fw4cNJTU094p579uzh2muvZcOGDWRmZvLYY49x9dVXM3PmTO677z72799PmTJlmDp1KmbGnXfeyZw5cyhZsiT//ve/Of/88xkxYgRfffUVu3btIi4ujsmTJ/P000/z6aefkpaWxtVXX/1b3JGmbtCCyJ5cICIiIse1dOlS/vjHP7J48WLq1q3L008/TWJiIvPmzWPSpEksXrz4qHN27dpFt27dmDdvHp06dWLUqFEA3HPPPQwdOpQFCxZQu3btY95v3LhxNGrUiHnz5rFw4UIuuugi0tLSGDBgAMOHD2fevHlMnDiR0qVL8+KLL1K6dGkWLFjAO++8w4033vhbt21SUhKffvopkydPZty4cSQnJzNz5kzmzp3L9OnTmT59euS+aEHUspZf+7ZB6lo4+9ZoRyIiInKE/LSARVLTpk1J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\n",
      "text/plain": [
       "<Figure size 720x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 考虑学习率对结果的影响\n",
    "def test_GBDT_learning_rate(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    learning_rates = np.linspace(0.01,1.0)\n",
    "    fig = plt.figure()\n",
    "    fig.set_figwidth(10)\n",
    "    ax = fig.add_subplot(111)\n",
    "    traing_score=[]\n",
    "    testing_score=[]\n",
    "    for learning_rate in learning_rates:\n",
    "        clf = ensemble.GradientBoostingClassifier(n_estimators=30,learning_rate=learning_rate)\n",
    "        clf.fit(X_train,Y_train)\n",
    "        traing_score.append(clf.score(X_train,Y_train))\n",
    "        testing_score.append(clf.score(X_test,Y_test))\n",
    "        \n",
    "    ## 绘图 \n",
    "    ax.plot(learning_rates, traing_score,  label='Traing score')\n",
    "    ax.plot(learning_rates, testing_score, label='Testing score')\n",
    "    ax.set_xlabel('learning_rate')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.legend(loc='lower right')\n",
    "    ax.set_title('GradientBoostingClassifier')    \n",
    "    plt.show()\n",
    "\n",
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = load_data()\n",
    "test_GBDT_learning_rate(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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DGbMmMHo0aMZN27czvnma0Nm4s477+TDDz/cOX/xxRezevXqDh6xd+sTR1n2K2Yw5XgOev9FKjiUhvzBDDLLdVUiIiK9YsSIETuPfrz++uspKyvj6quv7vJ67rzzTmbNmsXo0aMBuOuuu3q0zp6SSCQoKMh+XFIg644px1PwxkOcsc8IClznIBMRkRxZNB8+XNmz6xx9KJx+U7ceevfdd7NgwQIaGxs5+uijueWWW0ilUlx88cUsX74cd+fSSy9lv/32Y/ny5Zx//vmUlpby6quv8vnPf55bbrmF6dOnM3LkSC677DIWLVrEoEGD+OMf/8i+++7LmjVruOiii4jFYpx99tksWLCAHTt27FJDTU0N5513Hps2bSKZTHL99ddz7rnnsnjxYq688kpisRglJSU888wzmBmXXXYZS5cupbCwkJ/85Cccf/zx3H777Tz22GNUVVWRl5fHU089xU033cTDDz9MPB7n3HPP5brrrmtnK3SPuiy7IxpHNrL6TYoGK5CJiIi88cYbPPLII7z00kssX76cRCLBAw88wGuvvcbWrVtZuXIlb7zxBl//+tc5//zzmTFjBr/97W9Zvnz5bpcwqqqq4oQTTmDFihUcddRR3HnnnQBcccUVXH311axcuZIxY8a0WcfChQuZPHkyK1as4I033uCUU04hHo9zwQUXsGDBAlasWMETTzxBcXExN998M8XFxaxcuZJ77rmHefPm7ex2XbZsGQ8//DBPPfUUCxcuZP369SxevJjly5fz0ksv8dJLL/Xo9lMLWXcMnwxDJ0LVep3yQkREcqebLVnZ8Je//IUlS5Ywe3a4SlB9fT0TJkxg7ty5rF69mn/4h3/gzDPP5NRTT+10XaWlpZx++ukAHHHEETz//PMALF68mIULw7GCF154Iddee+1ujz3ssMOYP38+8+fP56yzzuKYY45h2bJlTJw4kVmzZgHsvC7mCy+8wDXXXAPAtGnTGDt2LGvXrgXg1FNPZfjwcK3qJ554gkWLFjFz5kwAamtreeeddzj66KO7t7HaoEDWHWaw//Gw7F4dYSkiIgK4O3/913/N9773vd3ue/3111m0aBELFizgoYce4rbbbutwXektZvn5+SQSiYzrOOSQQ6ioqGDhwoXMnz+f008/fWe464rBg1sO2HN3rr32Wi655JIurydT6rLsrqjbUi1kIiIicPLJJ/Pggw+ydetWIByNuX79erZs2YK781d/9VfceOONLF26FIDy8nJqamq69Bxz5szhkUceAeCBBx5oc5mNGzdSVlbGvHnzuOqqq1i6dClTp05l/fr1O5+7urqaZDLJcccdx29+8xsgXBh88+bNHHDAAbutc+7cudxxxx3U1dUBUFlZufN19hS1kHXXlOPDb50UVkREhEMPPZTvfve7nHzyyaRSKQoLC7n11lvJz8/nkksuwd0xM37wgx8A4TQXf/M3f7NzUH8mbr75ZubNm8cNN9zA3Llzd3Y9pluxYgXz588nLy+PoqIibr31VoqLi7n//vu5/PLLicfjlJaW8vTTT3PFFVfwrW99i0MPPZTCwkJ+/etf7zaeDeCMM87g7bff5sgjjwRCmLzvvvsYOXLkHmyxXZl77q7V3R2zZ8/2ioqKXJcRvPTfMPlYGDsz15WIiMgA8dZbb3HIIYfkuoycqKurY9CgQZgZ9957L4888ggPPfRQrsvaqa19Y2avufvszh6rFrI9cfQVua5ARERkwFiyZAlXXnklqVSK4cOH99lzl3WHApmIiIj0CyeeeOLOk9LubTSoX0REpJ/pb8ONBoI93ScKZCIiIv1ISUkJ27ZtUyjrQ9ydbdu2UVJS0u11qMtSRESkHxk/fjyVlZVs2bIl16VImpKSEsaPH9/txyuQiYiI9COFhYVMmTIl12VID1OXpYiIiEiOKZCJiIiI5JgCmYiIiEiO9bsz9ZvZFuCDHlzlSKBnL0glPUX7pm/Sfum7tG/6Ju2Xvqs39s0kdx/V2UL9LpD1NDOryOSSBtL7tG/6Ju2Xvkv7pm/Sfum7+tK+UZeliIiISI4pkImIiIjkmAIZ3JbrAqRd2jd9k/ZL36V90zdpv/RdfWbfDPgxZCIiIiK5phYyERERkRxTIBMRERHJsQETyMzsNDNbbWZrzWx+G/cXm9lvo/sXm9nk3q9y4Mlgv3zHzFaZ2etm9pSZTcpFnQNRZ/smbbmvmJmbWZ84dHxvl8l+MbPzov+bN83svt6ucaDK4P1sopk9Y2bLove0M3JR50BjZnea2cdm9kY795uZ3Rztt9fNbFZv1wgDJJCZWT6wADgdmAp81cymtlrsEmC7ux8A/D/gB71b5cCT4X5ZBsx298OA3wM/7N0qB6YM9w1mVg78I7C4dyscmDLZL2Z2IPCvwDHuPg24stcLHYAy/J+5FnjQ3WcCFwA/690qB6xfAad1cP/pwIHRz6XAz3uhpt0MiEAGzAHWuvt77t4IPACc02qZc4C7o+nfAyeZmfVijQNRp/vF3Z9x91g0+wowvpdrHKgy+Z8B+B7hy0u8N4sbwDLZL38LLHD37QDu/nEv1zhQZbJvHBgSTQ8FNvVifQOWuz8HfNLBIucAv/bgFWCYmY3pnepaDJRANg7YkDZfGd3W5jLungCqgBG9Ut3Alcl+SXcJsCirFUmzTvdN1Kw/wd3/3JuFDXCZ/M8cBBxkZi+a2Stm1lHLgPScTPbN9cBFZlYJLASu6J3SpBNd/SzKioLefkKR7jCzi4DZwAm5rkXAzPKA/wK+meNSZHcFhK6XEwktys+Z2aHuviOnVQnAV4FfufuPzewo4B4zm+7uqVwXJrk3UFrINgIT0ubHR7e1uYyZFRCak7f1SnUDVyb7BTM7Gfh34Gx3b+il2ga6zvZNOTAdeNbM1gFHAo9qYH/WZfI/Uwk86u5N7v4+8A4hoEl2ZbJvLgEeBHD3l4ESwsWtJbcy+izKtoESyJYAB5rZFDMrIgymfLTVMo8C34imzwWedp01N9s63S9mNhP4BSGMaSxM7+lw37h7lbuPdPfJ7j6ZML7vbHevyE25A0Ym72V/ILSOYWYjCV2Y7/VmkQNUJvtmPXASgJkdQghkW3q1SmnLo8DXo6MtjwSq3H1zbxcxILos3T1hZt8GHgfygTvd/U0zuxGocPdHgTsIzcdrCYP/LshdxQNDhvvlR0AZ8LvoGIv17n52zooeIDLcN9LLMtwvjwOnmtkqIAlc4+5q7c+yDPfNVcAvzeyfCAP8v6kv/tlnZvcTvqSMjMbvfRcoBHD3Wwnj+c4A1gIx4OKc1Km/BREREZHcGihdliIiIiJ9lgKZiIiISI4pkImIiIjkmAKZiIiISI4pkImIiIjkmAKZiOw1zOx6M7u6D9SxLjoHmIhIRhTIRERERHJMgUxE+jQzG2xmfzazFWb2hpmdn94CZWazzezZtIccbmYvm9kaM/vbaJkxZvacmS2P1nFcdPvPzazCzN40sxvSnnOdmf2faPkKM5tlZo+b2btmdlm0zInROv9sZqvN7NboGp+t67/IzF6N1vULM8vP5vYSkf5JgUxE+rrTgE3ufri7Twf+p5PlDwM+DxwFXGdmY4ELgcfdfQZwOLA8Wvbf3X129JgTzOywtPWsj5Z/HvgV4ZJqRwI3pC0zB7gCmAp8CvhyeiHR5XHOB46J1pUEvtaF1y4iA8SAuHSSiPRrK4Efm9kPgMfc/fnoMlrt+aO71wP1ZvYMITQtAe40s0LgD+7eHMjOM7NLCe+FYwjB6vXovubLQ60Eyty9BqgxswYzGxbd96q7vwc7L89yLPD7tFpOAo4AlkQ1lwK6JquI7EaBTET6NHd/x8xmEa41959m9hSQoKWFv6T1Q3ZfhT9nZscDZwK/MrP/IrR8XQ18xt23m9mvWq2rIfqdSptunm9+79ztuVrNG3C3u/9rJy9TRAY4dVmKSJ8WdTnG3P1ewsXmZwHrCC1PAF9p9ZBzzKzEzEYQLii8xMwmAR+5+y+B26N1DAHqgCoz2w84vRvlzTGzKdHYsfOBF1rd/xRwrpntG72WfaJaRER2oRYyEenrDgV+ZGYpoAm4nND1d4eZfQ94ttXyrwPPACOB77n7JjP7BnCNmTUBtcDX3f19M1sGvA1sAF7sRm1LgFuAA6LnfCT9TndfZWbXAk9Eoa0J+Hvgg248l4jsxcy9dQu7iIh0xsxOBK529y/kuhYR6f/UZSkiIiKSY2ohExEREckxtZCJiIiI5JgCmYiIiEiOKZCJiIiI5JgCmYiIiEiOKZCJiIiI5Nj/Dz0zT60UaHxAAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 720x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 考虑subsample对结果的影响\n",
    "def test_GBDT_subsample(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    subsamples = np.linspace(0.01,1.0)\n",
    "    fig = plt.figure()\n",
    "    fig.set_figwidth(10)\n",
    "    ax = fig.add_subplot(111)\n",
    "    traing_score=[]\n",
    "    testing_score=[]\n",
    "    for subsample in subsamples:\n",
    "        clf = ensemble.GradientBoostingClassifier(subsample=subsample)\n",
    "        clf.fit(X_train,Y_train)\n",
    "        traing_score.append(clf.score(X_train,Y_train))\n",
    "        testing_score.append(clf.score(X_test,Y_test))\n",
    "        \n",
    "    ## 绘图 \n",
    "    ax.plot(subsamples, traing_score,  label='Traing score')\n",
    "    ax.plot(subsamples, testing_score, label='Testing score')\n",
    "    ax.set_xlabel('subsample')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.legend(loc='lower right')\n",
    "    ax.set_title('GradientBoostingClassifier')    \n",
    "    plt.show()\n",
    "\n",
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = load_data()\n",
    "test_GBDT_subsample(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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9u3bj4hh165dXHvttWzevJmsrCwee+wxrrnmGubOncs999zD3r17qVChAjNnzsTMGDhwIAsWLCAxMZFnn32Wc889l1dffZVPPvmEHTt2UKZMGaZPn87w4cMZN24c+/fv55prruGRRx6JxKt9BE2DFtbBPb611JmXQs2je4eJiIjIr5YuXcr48eOZPXs2ixYtIjMzk/fee4/vvvuO9PR0lixZwtKlS7npppu47rrraNu2Lf/9739ZtGjRUW2fduzYQY8ePUhJSaFz586MHTsWgCFDhjB06FCWLFnCySefnGcckyZNokmTJqSkpLB06VIuuugi9u/fT//+/Rk1ahQpKSlMnTqV8uXLM2LECMqXL8+SJUt48803GTBgwOGp3IULFzJu3DimT5/OpEmT2LBhA3PnzmXRokXMnj2b2bNnR/w11MhaYS16B/b9Al2GxDoSERGRvIU5AvX79JEAAAvZSURBVBYNn3/+OfPnzycpyXdW2rdvHw0bNqR3796sWrWKu+++m0svvZRevXoVeK6KFSvSp4+va3r22Wcza9YsAObOncukSZMAuOGGG3jooYeOemybNm0YNmwYw4YN4/LLL6dr164sXLiQRo0a0b59e4DDfUa//vpr7r//fgBatmxJvXr1SE1NBaBXr15Ur14dgKlTpzJ58mTatWsHwO7du1m9ejVdunQJ78U6BiVrhZGd5TcWNDgHGnaMdTQiIiJxzznHLbfcwt/+9rej7lu8eDGTJ09m1KhRfPjhh7z88sv5nit4pC0hIYHMzMyQ42jevDnJyclMmjSJYcOG0adPn8OJX2FUrlz58OfOOR566CFuvfXWQp+nMDQNWhgrPoZffoAud4NZrKMRERGJexdeeCHvv/8+6enpgN81umHDBrZu3Ypzjt/85jc88cQTLFiwAICqVauya9euQl2jQ4cOjB8/HoD33nsvz2M2bdpElSpVGDBgAPfddx8LFiygRYsWbNiw4fC1d+7cSVZWFt27d+ftt98GfBP2LVu2cOqpRy996t27N2PGjGHPnj0ApKWlHX6ekaSRtVA5B7NHQPWmfr2aiIiIFKh169Y8+uijXHjhhWRnZ5OYmMjo0aNJSEjg1ltvxTmHmfH0008DvlTHH/7wh8MbDEIxYsQIBgwYwOOPP07v3r0PT2cGS0lJYdiwYZQpU4Zy5coxevRoypcvz7vvvsug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\n",
      "text/plain": [
       "<Figure size 720x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 考虑max_features对结果的影响\n",
    "def test_GBDT_max_feature(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    max_features = np.linspace(0.01,1.0)\n",
    "    fig = plt.figure()\n",
    "    fig.set_figwidth(10)\n",
    "    ax = fig.add_subplot(111)\n",
    "    traing_score=[]\n",
    "    testing_score=[]\n",
    "    for max_feature in max_features:\n",
    "        clf = ensemble.GradientBoostingClassifier(max_features=max_feature)\n",
    "        clf.fit(X_train,Y_train)\n",
    "        traing_score.append(clf.score(X_train,Y_train))\n",
    "        testing_score.append(clf.score(X_test,Y_test))\n",
    "        \n",
    "    ## 绘图 \n",
    "    ax.plot(max_features, traing_score,  label='Traing score')\n",
    "    ax.plot(max_features, testing_score, label='Testing score')\n",
    "    ax.set_xlabel('max_feature')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.legend(loc='lower right')\n",
    "    ax.set_title('GradientBoostingClassifier')    \n",
    "    plt.show()\n",
    "\n",
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = load_data()\n",
    "\n",
    "\n",
    "test_GBDT_max_feature(X_train,X_test,Y_train,Y_test)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
